﻿/*----------------------------------------------------------------------------------------------------------------
  -- TABLE --
  ----------------------------------------------------------------------------------------------------------------
  ----------------------------------------------------------------------------------------------------------------
  ----------------------------------------------------------------------------------------------------------------
  ---------------------------------------------------------------------------------------------------------------*/

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[OrganizationTypes]') AND type in (N'U'))
DROP TABLE [dbo].[OrganizationTypes]
GO

CREATE TABLE [dbo].[OrganizationTypes] (
    [Id] INT IDENTITY(1,1) PRIMARY KEY,
    [Name] NVARCHAR(255),
    [Code] VARCHAR(40)--Tên vắn tắt
);
GO

----------------------------------------------------------------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Organizations]') AND type in (N'U'))
DROP TABLE [dbo].[Organizations]
GO

CREATE TABLE [dbo].[Organizations] (
    [Id] VARCHAR(10) NOT NULL,
    [Name] NVARCHAR(255) NOT NULL,
    [OrgType] integer DEFAULT 0 NOT NULL,--Loại hình doanh nghiệp
    [IsActive] bit NOT NULL DEFAULT 1,--Đang hoạt động?
    [Description] NVARCHAR(255),
    [TransactionName] NVARCHAR(255),--Tên giao dịch
    [HeadTransactions] NVARCHAR(255),--Trụ sở giao dịch (địa chỉ)
    [Phone] VARCHAR(20),--Điện thoại của doanh nghiệp
    [Website] VARCHAR(50),--Website của doanh nghiệp
    [Email] VARCHAR(20),--Địa chỉ email của doanh nghiệp
    [MST] VARCHAR(20),--Mã số thuế của doanh nghiệp
    [Ticker] VARCHAR(10),--Mã chứng khoán
    [Director] INT, --Giám Đốc (người đại diện trước pháp luật)
    [BusinessLicenseNum] NVARCHAR(15),--Giấy phép kinh doanh số
    [DateOfBirth] DateTime,--Ngày cấp: 30-07-2014
    [Chairman] INT,--Chủ tịch HĐQT
    [Logo] VARCHAR(40),--Tên ảnh (Md5 - Ảnh được đặt ở thư mục trên máy)
    [CharterCapital] money,--Vốn điều lệ (8 bytes)
    [MainLinesOfBusiness] NVARCHAR(400)--Ngành nghề kinh doanh chính,
	PRIMARY KEY ([Id])
);
GO

----------------------------------------------------------------------------------------------------
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Companies]') AND type in (N'U'))
DROP TABLE [dbo].[Companies]
GO

CREATE TABLE [dbo].[Companies] (
    [Id] VARCHAR(10) NOT NULL,
    [Name] NVARCHAR(255) NOT NULL,
    [OrgType] integer DEFAULT 0 NOT NULL,--Loại hình doanh nghiệp
    [IsActive] bit NOT NULL DEFAULT 1,--Đang hoạt động?
    [Description] NVARCHAR(255),
    [ParentId] VARCHAR(10),--Thuộc tổng công ty nào?
    [TransactionName] NVARCHAR(255),--Tên giao dịch
    [HeadTransactions] NVARCHAR(255),--Trụ sở giao dịch (địa chỉ)
    [Phone] VARCHAR(20),--Điện thoại của doanh nghiệp
    [Website] VARCHAR(50),--Website của doanh nghiệp
    [Email] VARCHAR(20),--Địa chỉ email của doanh nghiệp
    [MST] VARCHAR(20),--Mã số thuế của doanh nghiệp
    [Ticker] VARCHAR(10),--Mã chứng khoán
    [Director] INT, --Giám Đốc (người đại diện trước pháp luật)
    [BusinessLicenseNum] NVARCHAR(15),--Giấy phép kinh doanh số
    [DateOfBirth] DateTime,--Ngày cấp: 30-07-2014
    [Chairman] INT,--Chủ tịch HĐQT
    [Logo] VARCHAR(40),--Tên ảnh (Md5 - Ảnh được đặt ở thư mục trên máy)
    [CharterCapital] money,--Vốn điều lệ (8 bytes)
    [MainLinesOfBusiness] NVARCHAR(400)--Ngành nghề kinh doanh chính,
	PRIMARY KEY ([Id])
);
GO

----------------------------------------------------------------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Users]') AND type in (N'U'))
DROP TABLE [dbo].[Users]
GO

CREATE TABLE [dbo].[Users] (
	[UserId] uniqueidentifier NOT NULL,
	[UserName] NVARCHAR(256) NOT NULL,
	[OrgId] VARCHAR(10),
	[FirstName] NVARCHAR(25),
	[LastName] NVARCHAR(25),
	[Email] VARCHAR(50),--Địa chỉ email
	[IsActive] bit NOT NULL DEFAULT 1,--Đang hoạt động?
	[DateOfBirth] DateTime, --Ngày sinh
	[Picture] VARCHAR(40),--Tên ảnh (Md5)
	[CMT] VARCHAR(15),--Chứng minh thư
	[Address] NVARCHAR(255),--Địa chỉ liên hệ
	[Phone] VARCHAR(20),--Điện thoại
	[Mobile] VARCHAR(20),--Điện thoại di động
	[IsRepre] bit--Là người dại diện của doanh nghiệp,
	PRIMARY KEY ([UserId])
);
GO


----------------------------------------------------------------------------------------------------

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Roles]') AND type in (N'U'))
DROP TABLE [dbo].[Roles]
GO

CREATE TABLE [dbo].[Roles](	
	[Id] uniqueidentifier NOT NULL,
	[Name] NVARCHAR(256) NOT NULL,
	[OrgId] VARCHAR(10) NOT NULL, -- Có thể là Organization, có thể là Company
	[Description] NVARCHAR(256) NULL,
	PRIMARY KEY ([Id], [OrgId])
);
GO

----------------------------------------------------------------------------------------------------

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[UsersInRoles]') AND type in (N'U'))
DROP TABLE [dbo].[UsersInRoles]
GO

CREATE TABLE [dbo].[UsersInRoles](
	[OrgId] VARCHAR(10),
	[UserId] uniqueidentifier,
	[RoleId] uniqueidentifier,
	[CtrIds] VARCHAR(MAX) --Module hoặc Danh mục --Tạo bởi người dùng, cộng dồn nhiều module hoặc nhiều danh mục lại với nhau
);
GO

----------------------------------------------------------------------------------------------------

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Controls]') AND type in (N'U'))
DROP TABLE [dbo].[Controls]
GO

CREATE TABLE [dbo].[Controls](
	[Id] VARCHAR(40) NOT NULL,	--Tạo bởi người dùng
	[Name] NVARCHAR(256) NOT NULL,	
	PRIMARY KEY ([Id])
);
GO

----------------------------------------------------------------------------------------------------

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[LocalizedData]') AND type in (N'U'))
DROP TABLE [dbo].[LocalizedData]
GO

CREATE TABLE [dbo].[LocalizedData](
    [Identifier] VARCHAR(50) NOT NULL,
    [Language] VARCHAR(5) NOT NULL,
    [Title] NVARCHAR(255),
    [Description] NVARCHAR(255),
    [CreatedBy] uniqueidentifier,
    [CreatedDate] DateTime,
    [ModifiedBy] uniqueidentifier,
    [ModifiedDate] DateTime,
    PRIMARY KEY ([Identifier], [Language])
);

GO

----------------------------------------------------------------------------------------------------

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Menus]') AND type in (N'U'))
DROP TABLE [dbo].[Menus]
GO

CREATE TABLE [dbo].[Menus](
	[Id] [int] NOT NULL,
	[ParentId] [int] NULL,
	[Icon] [nvarchar](255) NULL,
	[Caption] [nvarchar](255) NULL,
	[Tooltip] [nvarchar](255) NULL,
	[Description] [nvarchar](255) NULL,
	[Action] [nvarchar](255) NULL,
	[State] [bit] NULL,
	[Type] [smallint] NULL,
	[SortOrder] [smallint] NULL,
 CONSTRAINT [PK_Menus] PRIMARY KEY CLUSTERED 
(
	[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO